﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace University_Model
{
    class Program
    {
        static void Main(string[] args)
        {
            Faculty faculty = new Faculty("Биологический");
            Department dep1 = new Department("Кафедра генетики и цитологии");
            faculty.listOfDeps.Add(dep1);
            Group group1 = new Group("БГ-11");
            Group group2 = new Group("БГ-12");
            dep1.listOfGroups.Add(group1);
            dep1.listOfGroups.Add(group2);
            Students student1 = new Students("Альбина", "Немова", new DateTime (1990, 01, 01));
            Students student2 = new Students("Арина", "Травкина", new DateTime (1990, 02, 02));
            Students student3 = new Students("Арина", "Травкина", new DateTime(1900, 03, 03));
            Students student4 = new Students("Арина", "Травкина", new DateTime(1900, 04, 04));
            student1.marks = new List<int>(new int[] { 60, 73, 89 });
            student2.marks = new List<int>(new int[] { 20, 10, 15 });
            student3.marks = new List<int>(new int[] { 60, 90, 30 });
            student4.marks = new List<int>(new int[] { 5, 10, 40 });
            group1.listOfStudents.Add(student1);
            group2.listOfStudents.Add(student2);
            Department dep2 = new Department("Кафедра физиологии и биохимии растений");
            faculty.listOfDeps.Add(dep2);
            Group group3 = new Group("Б-101");
            Group group4 = new Group("Б-102");
            dep2.listOfGroups.Add(group3);
            dep2.listOfGroups.Add(group4);
            group3.listOfStudents.Add(student3);
            group4.listOfStudents.Add(student4);

            Console.WriteLine("Чего изволите?");
            Console.WriteLine("1 - Показать список студентов на определенной кафедре;");
            Console.WriteLine("2 - Показать список студентов в группе, у которых средний балл выше 50;");
            Console.WriteLine("3 - Показать список студентов на факультете, у которых средний балл ниже 20.");
            int choice = Int32.Parse(Console.ReadLine());
            if (choice == 1)
            {
                Console.WriteLine("Выберите кафедру:");
                    for (int i = 0; i < faculty.listOfDeps.Count; i++)
                {
                    Console.WriteLine("{0} - {1}", i+1, faculty.listOfDeps[i].depName);
                }
                    int depChoice = Int32.Parse(Console.ReadLine()) - 1;
                foreach (Group group in faculty.listOfDeps[depChoice].listOfGroups)
                {
                    foreach (Students student in group.listOfStudents)
                    {
                        student.PrintStudentToConsole();
                    }
                }
            }
            else if (choice == 2)
            {
                Console.WriteLine("Выберите кафедру:");
                for (int i = 0; i < faculty.listOfDeps.Count; i++)
                {
                    Console.WriteLine("{0} - {1}", i + 1, faculty.listOfDeps[i].depName);
                }
                int depChoice = Int32.Parse(Console.ReadLine()) - 1;
                Console.WriteLine("Выберите группу:");
                for (int i = 0; i < faculty.listOfDeps[depChoice].listOfGroups.Count; i++)
                {
                    Console.WriteLine("{0} - {1}", i+1, faculty.listOfDeps[depChoice].listOfGroups[i].groupName);
                }
                int groupChoice = Int32.Parse(Console.ReadLine()) - 1;
                foreach (Students student in faculty.listOfDeps[depChoice].listOfGroups[groupChoice].listOfStudents)
                {
                    student.CalculateAverageMark(50, true);
                }
            }
            else if (choice == 3)
            {
                foreach (Department dep in faculty.listOfDeps)
                {
                    foreach (Group group in dep.listOfGroups)
                    {
                        foreach (Students student in group.listOfStudents)

                            student.CalculateAverageMark(20, false);
                    }
                }
            }
        }
    }
}
